02-WAS서버구성
WAS 서버 구성 (Tomcat + JSP)
WAS 서버에 Tomcat을 설치하고 간단한 JSP 애플리케이션을 배포합니다.
전제조건
- AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/01-아키텍처이해및준비 완료 (WAS 서버 생성됨)
- Web 서버를 통해 WAS 서버에 SSH 접속 가능
1. Java 및 Tomcat 설치
WAS 서버에 접속하여 Java와 Tomcat을 설치합니다.
WAS 서버 접속
# Web 서버에 먼저 접속
ssh -i webapp-keypair.pem ec2-user@[Web서버-Public-IP]
# Web 서버에서 WAS 서버로 접속
ssh ec2-user@[WAS서버-Private-IP]
시스템 업데이트 및 Java 설치
# 시스템 패키지 업데이트
sudo yum update -y
# Java 17 설치
sudo yum install java-17-amazon-corretto-devel -y
# Java 설치 확인
java -version
Tomcat 10 설치
# 작업 디렉토리로 이동
cd /tmp
# Tomcat 10 다운로드
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
# 압축 해제
tar -xzf apache-tomcat-10.1.26.tar.gz
# Tomcat을 /opt 디렉토리로 이동
sudo mv apache-tomcat-10.1.26 /opt/tomcat
# 실행 권한 부여
sudo chmod +x /opt/tomcat/bin/*.sh
Tomcat 환경 변수 설정
# 환경 변수 설정
echo 'export CATALINA_HOME=/opt/tomcat' | sudo tee -a /etc/environment
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto' | sudo tee -a /etc/environment
# 현재 세션에 적용
export CATALINA_HOME=/opt/tomcat
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto
2. 간단한 JSP 애플리케이션 생성
기본적인 "Hello World" JSP 페이지를 만들어봅니다.
webapp 디렉토리 생성
# 웹 애플리케이션 디렉토리 생성
sudo mkdir -p /opt/tomcat/webapps/webapp
index.jsp 파일 생성
# 간단한 JSP 페이지 생성
sudo tee /opt/tomcat/webapps/webapp/index.jsp << 'EOF'
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tomcat WAS 서버</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 50px auto;
padding: 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.container {
background: white;
color: #333;
padding: 30px;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}
h1 {
color: #4ECDC4;
text-align: center;
}
.info-box {
background: #f8f9fa;
padding: 20px;
margin: 20px 0;
border-left: 4px solid #4ECDC4;
border-radius: 5px;
}
.server-info {
background: #e3f2fd;
padding: 15px;
border-radius: 5px;
margin: 10px 0;
}
</style>
</head>
<body>
<div class="container">
<h1>🎉 Tomcat WAS 서버 동작 확인</h1>
<div class="info-box">
<h3>서버 정보</h3>
<div class="server-info">
<strong>서버 타입:</strong> Apache Tomcat WAS<br>
<strong>현재 시간:</strong> <%= new Date() %><br>
<strong>서버 포트:</strong> 8080<br>
<strong>애플리케이션:</strong> /webapp
</div>
</div>
<div class="info-box">
<h3>JSP 동적 처리 테스트</h3>
<p><strong>페이지 로드 시간:</strong>
<%
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
out.println(sdf.format(new Date()));
%>
</p>
<p><strong>세션 ID:</strong> <%= session.getId() %></p>
</div>
<div class="info-box">
<h3>아키텍처 정보</h3>
<p>이 페이지는 <strong>Private 서브넷</strong>의 Tomcat WAS에서 동작하고 있습니다.</p>
<p>일반적으로는 Apache Web Server를 통해 접근하게 됩니다.</p>
</div>
</div>
</body>
</html>
EOF
정적 파일 생성 (CSS 테스트용)
# 정적 파일을 위한 디렉토리 생성
sudo mkdir -p /opt/tomcat/webapps/webapp/static
# 간단한 CSS 파일 생성
sudo tee /opt/tomcat/webapps/webapp/static/test.css << 'EOF'
/* 정적 파일 테스트용 CSS */
.static-test {
background-color: #ff6b6b;
padding: 20px;
border-radius: 10px;
color: white;
text-align: center;
margin: 20px 0;
}
EOF
정적 파일 테스트 페이지
# 정적 파일 연동 테스트 페이지
sudo tee /opt/tomcat/webapps/webapp/static-test.html << 'EOF'
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>정적 파일 테스트</title>
<link rel="stylesheet" href="static/test.css">
</head>
<body>
<h1>정적 파일 테스트</h1>
<div class="static-test">
<h2>이 파일은 정적 파일입니다</h2>
<p>Apache Web Server에서 직접 처리되어야 합니다.</p>
<p>Tomcat에서도 접근 가능하지만, 성능상 Apache에서 처리하는 것이 좋습니다.</p>
</div>
</body>
</html>
EOF
3. Tomcat 시작 및 테스트
Tomcat을 시작하고 JSP 애플리케이션이 정상 동작하는지 확인합니다.
Tomcat 시작
# Tomcat 시작
sudo /opt/tomcat/bin/startup.sh
# Tomcat 프로세스 확인
ps aux | grep tomcat
# Tomcat 로그 확인
sudo tail -f /opt/tomcat/logs/catalina.out
로컬 테스트
# WAS 서버에서 로컬 테스트
curl http://localhost:8080/webapp/
# JSP 페이지가 정상적으로 HTML로 변환되어 출력되면 성공
Web 서버에서 WAS 접근 테스트
# Web 서버로 돌아가기 (WAS 서버에서 exit)
exit
# Web 서버에서 WAS로 접근 테스트
curl http://[WAS서버-Private-IP]:8080/webapp/
# 예시: curl http://10.0.2.45:8080/webapp/
4. Tomcat 관리 설정 (선택사항)
Tomcat을 더 쉽게 관리할 수 있도록 시스템 서비스로 등록합니다.
Tomcat 서비스 파일 생성
# WAS 서버에 다시 접속
ssh ec2-user@[WAS서버-Private-IP]
# 현재 실행 중인 Tomcat 중지
sudo /opt/tomcat/bin/shutdown.sh
# Tomcat 시스템 서비스 파일 생성
sudo tee /etc/systemd/system/tomcat.service << 'EOF'
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=root
Group=root
Environment=JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 서비스 데몬 리로드
sudo systemctl daemon-reload
# Tomcat 서비스 시작 및 자동 시작 설정
sudo systemctl enable tomcat
sudo systemctl start tomcat
# 서비스 상태 확인
sudo systemctl status tomcat
5. 방화벽 설정 (필요시)
Amazon Linux에서 방화벽이 활성화되어 있는 경우 포트를 개방합니다.
방화벽 상태 확인
# 방화벽 상태 확인
sudo systemctl status firewalld
# 방화벽이 비활성화되어 있다면 아무 작업 불필요
포트 개방 (방화벽이 활성화된 경우에만)
# 8080 포트 개방 (필요시에만)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
완료 체크리스트
테스트 URL 정리
WAS 서버에서 직접 접근:
- JSP 페이지:
http://localhost:8080/webapp/ - 정적 파일:
http://localhost:8080/webapp/static-test.html
Web 서버에서 WAS 접근:
- JSP 페이지:
http://[WAS-Private-IP]:8080/webapp/ - 정적 파일:
http://[WAS-Private-IP]:8080/webapp/static-test.html
WAS 서버 구성 완료! Tomcat과 JSP 애플리케이션이 정상적으로 동작하고 있습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/03-Web서버연동으로 이동하여 Apache HTTP Server를 설치하고 Tomcat과 연동합니다.
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드, AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/01-아키텍처이해및준비